//package it.unibz.easytravel.tracker;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.Iterator;
//
//import javax.imageio.ImageIO;
//import javax.imageio.ImageReader;
//import javax.imageio.metadata.IIOMetadata;
//import javax.imageio.metadata.IIOMetadataNode;
//import javax.imageio.stream.ImageInputStream;
//
//import org.w3c.dom.NodeList;
//
//import com.drew.lang.Rational;
//import com.drew.metadata.Metadata;
//import com.drew.metadata.MetadataException;
//import com.drew.metadata.exif.ExifReader;
//import com.drew.metadata.exif.GpsDirectory;
//
//public class JpgGpsReader {
//	
//	
//	public static double [] ExtractGpsCoordinates (String filename) {
//		//String filename = "F:\\eclipse\\Eclipse workspace\\JPGTest\\src\\scena2031.jpg";
//		double[] gps = null;
//		try {
//		      File f = new File(filename);
//		      ImageInputStream ios = ImageIO.createImageInputStream(f);
//		      Iterator readers = ImageIO.getImageReaders(ios);
//		      if (readers.hasNext()) {
//		        ImageReader reader = (ImageReader) readers.next();
//		        reader.setInput(ios, true);
//		        IIOMetadata metaData = reader.getImageMetadata(0);
//		        gps = getGpsInfo(metaData);
//		        if (gps != null){
//		            System.out.println(
//		                "latitude=" + gps[0] + " longitude=" + gps[1]);
//		        }
//		       
//		      }
//		     
//		    } catch (IOException ioe) {
//		      ioe.printStackTrace();
//		    }
//		    return gps;
//	}
//	
//	private static double[] getGpsInfo(IIOMetadata meta){
//
//	      IIOMetadataNode root = (IIOMetadataNode)meta.getAsTree(
//	              meta.getNativeMetadataFormatName());
//
//	      try{
//	          NodeList nl = root.getElementsByTagName("unknown");
//	          int nodes = nl.getLength();
//	          for (int i=0; i < nodes; i++){
//	              IIOMetadataNode node = (IIOMetadataNode)nl.item(i);
//	              String val = node.getAttribute("MarkerTag");
//	              if (val != null && val.equals("225")){
//	                  return getGpsInfo((byte[])node.getUserObject());
//	              }
//	          }
//	      }
//	      catch(MetadataException me){
//	          me.printStackTrace();
//	      }
//	      return null;
//	  }
//	  private static double[] getGpsInfo(byte[] bytes) throws MetadataException {
//
//			Metadata meta = new Metadata();
//			new ExifReader(bytes).extract(meta);
//
//			GpsDirectory dir = (GpsDirectory) meta.getDirectory(GpsDirectory.class);
//			if (dir == null) {
//				return null;
//			}
//
//			double lat = 0;
//			double lon = 0;
//			Rational[] rs;
//			String s;
//
//			if (dir.containsTag(dir.TAG_GPS_LATITUDE)) {
//				rs = dir.getRationalArray(dir.TAG_GPS_LATITUDE);
//				lat = rs[0].doubleValue() + (rs[1].doubleValue() / 60)
//						+ (rs[2].doubleValue() / 3600);
//			}
//			if (dir.containsTag(dir.TAG_GPS_LONGITUDE)) {
//				rs = dir.getRationalArray(dir.TAG_GPS_LONGITUDE);
//				lon = rs[0].doubleValue() + (rs[1].doubleValue() / 60)
//						+ (rs[2].doubleValue() / 3600);
//			}
//			if (dir.containsTag(dir.TAG_GPS_LATITUDE_REF)) {
//				s = dir.getString(dir.TAG_GPS_LATITUDE_REF);
//				if (s.equals("S")) {
//					lat *= -1;
//				}
//			}
//			if (dir.containsTag(dir.TAG_GPS_LONGITUDE_REF)) {
//				s = dir.getString(dir.TAG_GPS_LONGITUDE_REF);
//				if (s.equals("W")) {
//					lon *= -1;
//				}
//			}
//			return new double[] { lat, lon };
//		}
//
//}
